package es.unileon.rnag.jgen.ejemplos;

import es.unileon.rnag.jgen.AlgoritmoGenetico;
import es.unileon.rnag.jgen.Cromosoma;
import es.unileon.rnag.jgen.Estrategia;
import es.unileon.rnag.jgen.genes.GenRango;

public class MaxFuncionApuntes extends Cromosoma {

	public MaxFuncionApuntes() {
		super(1);
		addGen(new GenRango(-1,2,1e-6));
	}

	public MaxFuncionApuntes(Cromosoma c) {
		super(c);
	}

	@Override
	protected double calcularAptitud() {
		double valor = (Double)getGenes()[0].getValor();
		return (valor*Math.sin(10*Math.PI*valor)+1);
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Estrategia e = new Estrategia(Estrategia.RULETA_UN_PUNTO, 0.25f, 0.01f);
		AlgoritmoGenetico ag = new AlgoritmoGenetico(MaxFuncionApuntes.class, e, 50, 150);
		ag.evolucionar();
		Cromosoma mejor = ag.getMejor();
		System.out.println("Maximo valor " + mejor.getAptitud() + " alcanzado en " + mejor.getGenes()[0].getValor());

	}

}
